/*
 * Licensed to the Tai Ping Jin Ke
 *
 * Copyright (c) 2022 .
 * All rights reserved.
 * 项目名称：太平金科-基础组件封装层-分布式协调工具Zookeeper-缺省实现
 * 版权说明：本软件属太平金融科技服务(上海)有限公司所有，在未获得太平金融科技服务(上海)有限公司正式授权情况下，任何企业和个人，不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。
 */
package com.taipingframework.boot.zookeeper;

import com.taipingframework.utility.exception.UtilityException;
import org.apache.zookeeper.data.ACL;

import java.util.List;

public interface ZkClientApi {

    /**
     * 判断节点是否存在
     */
    boolean exists(String path) throws UtilityException;

    /**
     * 节点值 读取，无事件通知
     */
    Object readNode(String path) throws UtilityException;

    /**
     * 节点值 修改
     */
    void setNode(String path, Object value) throws UtilityException;

    /**
     * 节点 删除
     */
    void deleteNode(String path) throws UtilityException;

    /**
     * 持久化节点 创建
     */
    void addNodePersistent(String path, Object value, List<ACL> acl) throws UtilityException;

    /**
     * 持久化有序节点 创建，无事件通知
     */
    void addNodePersistentSequential(String path, Object value, List<ACL> acl) throws UtilityException;

    /**
     * 临时节点 创建
     */
    void addNodeEphemeral(String path, Object value, List<ACL> acl) throws UtilityException;

    /**
     * 临时有序节点 创建，无事件通知
     */
    void addNodeEphemeralSequential(String path, Object value, List<ACL> acl) throws UtilityException;

}
